It is axiomatic that computers do what one commands them to do, not what one wants them to do. In the early days of computer science, programmers were required to expressly command every change of state that occurred during execution of the program, in language directly understandable by the machine. In those days, interactive user interfaces did not exist; users simply provided data for processing and received results. The development of high-level programming, in which commands were expressed in more or less descriptive terms, proceeded in parallel with the introduction of interactive systems where users communicated with the computer during operation of the program.
At first, user interaction was highly constrained. Uses were allowed to choose among varieties of options, but the system presented the allowable choices. Introduction of intuitive user input devices, such as the mouse and the touchpad provided greater user flexibility, but the user was still limited to inputs that the computer could easily recognize.
Speech recognition systems offer the possibility of free-form user interaction with a computer system, but the complexity of human language has proved a formidable obstacle to the implementation of true natural language commands. The common experience of attempting to deal with speech recognition systems used by various dial-up customer service operations easily demonstrates the distance yet to be traversed before achieving true natural language control of computer systems. Existing technology available to the art can provide systems capable of accepting a number of vocal commands from a user, but those commands must be carefully defined, and for optimum success, training may be required before a computer system can consistently recognize commands.
Ordinary natural language often makes use of compound thoughts and commands. Among the aspects of human speech that present major obstacles to computers is the tendency to combine thoughts and ideas in ways that machines simply cannot understand but pose no problem for fellow humans to sort out. When a teacher says to a student, “Make sure you tell everyone who is absent today about the homework assignment,” the meaning of the statement depends on context in a number of ways. First, there is a requirement that the student know what the homework assignment is. If the student does not know the assignment, the statement includes an unstated command to find out that information. The same holds true for the identities of everyone absent from class that day—if that information is not known, it must be determined. Once those two subsidiary queries are satisfied, the resultant information is not communicated back to the teacher, as would be the case with a conventional query, but rather the results of the first query (the homework assignment) is forwarded to the persons who were absent from class that day (results of the second query) by constructing and issuing additional commands.
Natural language statements such as the one set out above present no problems of understanding to a human listener. A conventional computer system, on the other hand, even a system capable of dealing with natural language inputs, would not be able to process that statement or others like it. Thus, the art stands in need of a method for handling natural language inputs that combine communication and queries.